﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace May_20_2021
{
    class Program
    {
        static void Main(string[] args)
        {
            Cat c = new Cat();
            c.Leg = 4;
            c.Eat();
            c.Sleep();
            c.Walk();
            c.Cry();

            Console.WriteLine("---------------------");

            Tiger t = new Tiger();
            t.Leg = 4;
            t.Eat();
            t.Sleep();
            t.Walk();
            t.Cry();

            Console.WriteLine("---------------------");

            Eagle e = new Eagle();
            e.Leg = 2;
            e.Eat();
            e.Sleep();
            e.Walk();
            e.Cry();

            Console.WriteLine("---------------------");

            Swallow s = new Swallow();
            s.Leg = 2;
            s.Eat();
            s.Sleep();
            s.Walk();
            s.Cry();

            Console.WriteLine("---------------------");

            PetStore ps = new PetStore();
            Cat Tom = new Cat();
            ps.ConsignCat(Tom);

            Console.WriteLine("---------------------");

            Tiger aaa = new Tiger();
            ps.ConsignTiger(aaa);

            Console.WriteLine("---------------------");

            Animal a = new Swallow();
            ps.ConsignAnimal(a);

            Console.WriteLine("************************");

            Console.WriteLine("欢迎来到xx宠物店，请问你要寄存什么动物呢：1、猫；2、燕子；3、老鹰；4、老虎");
            int key = int.Parse(Console.ReadLine());
            
            switch (key)
            {
                case 1:
                    a = new Cat();
                    break;
                case 2:
                    a = new Swallow();
                    break;
                case 3:
                    a = new Eagle();
                    break;
                case 4:
                    a = new Tiger();
                    break;
                default:
                    Console.WriteLine("没有这个选项！！！");
                    a = new Tiger();
                    break;
            }
            PetStore pt = new PetStore();
            ps.ConsignAnimal(a);


            //一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，
            //    以实现对两个整数的加、减、乘、除运算，并显示出计算结果。

            //1、创建Calculate基类，其中包含两个整型的protected成员，
            //    用以接收用户输入的两个整数。定义一个DisplayResult()虚方法，计算并输出结果。
            //2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，
            //    实现两个整数的加、减、乘、除运算，并输出结果。
            //3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
            //4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，
            //    实现计算和显示结果。
            Console.WriteLine("请输入运算符:1、加 2、减 3、乘 4、除");
            Calculate cal;
            int hhh = int.Parse(Console.ReadLine());

            switch (hhh)
            {
                case 1:
                    cal = new Add();
                    break;
                case 2:
                    cal = new Sub();
                    break;
                case 3:
                    cal = new Mul();
                    break;
                case 4:
                    cal = new Div();
                    break;
                default:
                    Console.WriteLine("选择出错默认选择加法!");
                    cal = new Add();
                    break;
            }

            Result result = new Result();
            result.result(cal);


            //二、创建一个Shape（形状）类，此类包含一个名为color的数据成员，
            //    用于存储颜色，这个类还包含一个名为GetArea()的虚方法
            //    （这个方法是用来获取形状面积的）。
            //基于这个Shape，创建两个子类：Circle（圆形类）和Square（正方形类），
            //    Circle类中包含radius（半径）的数据成员，Square类中包含sideLen（边长）
            //    的数据成员，这两个子类都去重写父类的GetArea()方法，各自去实现计算自己的面积。

            //在主类中添加一个方法，参数类型就是Shape，方法体中，用形参去调用GetArea()方法。
            //main方法中去测试这个方法。

            Shape h;
            Console.WriteLine("请输入你要计算的图形：1、圆；2、正方形。");
            int hhhh = int.Parse(Console.ReadLine());
            switch (hhhh)
            {
                case 1:
                    h = new Circle();
                    break;
                case 2:
                    h = new Square();
                    break;
                default:
                    Console.WriteLine("输入有错！！！");
                    h = new Circle();
                    break;
            }
            Print p = new Print();
            p.print(h);

        }

        
    }
}
